from collections import defaultdict

'''用并查集判断两个点的父节点是否相等，若相等说明是环，
则令strat, end分别等于这两个点，从start开始搜索，直到搜到end，在这个过程用ans存储环中的节点。'''
n = int(input())
p = [i for i in range(n + 1)]
# 存储图
tree = defaultdict(list)
# 记录使用过的点
used = [0] * (n + 1)
# 记录答案
ans = [0] * n

def find(x):
    if x != p[x]:
        p[x] = find(p[x])
    return p[x]

# 遍历
def dfs(pos, idx):
    ans[idx] = pos
    if pos == end:
        # for i in sorted(ans):
        #     if i==0:
        #         continue
        #     print(i,end=' ')
        # 切片，表示取ans中的前几位做处理
        res = sorted(ans[:idx + 1])
        # print(' '.join(map(str, res)))
        for i in res:
            print(i, end=' ')
        return

    for d in tree[pos]:
        if not used[d]:
            used[d] = 1
            dfs(d, idx + 1)


for _ in range(n):
    u, v = map(int, input().split())
    tu, tv = find(u), find(v)
    if tu == tv:
        start, end = u, v
        break
    else:
        # 合并根
        p[tv] = tu
        # 邻接矩阵 存储图
        tree[u].append(v)
        tree[v].append(u)

used[start] = 1
dfs(start, 0)